____ _ _ _ _
| _ \ ___ | |_ (_) _ __ ___ __| | (_) __ _
| |_) | / _ \ | __| | | | '_ \ / _ \ / _| | | | / _ |
| _ < | __/ | |_ | | | |_) | | __/ | (_| | | | | (_| |
|_| \_\ \___| \__| |_| | .__/ \___| \__,_| |_| \__,_|
|_|
- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Field Programmable Gate Array
part 9/17 · 51.8 KB total
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Für FPGAs wird beim Schaltungsentwurf ein synchrones Schaltungsdesign empfohlen, wenngleich nicht zwingend erforderlich. Das bedeutet: An allen Flipflops in einer sogenannten Takt-Domäne (englisch clock domain) liegt der gleiche Takt. Gesteuert wird die Datenübernahme in ein FPGA-Flipflop am besten nur über die zusätzlich vorhandenen Clock Enable-Eingänge und nicht über geteilte Taktsignale (englisch gated clocks). Das vermeidet schwer handhabbare Laufzeiteffekte. Manche FPGAs bieten spezielle Umschalter an, die das garantiert störungsfreie (glitch-freie) Wechseln zwischen verschiedenen Taktquellen im Betrieb erlauben.
Simulation
Nach und während der Erstellung der Beschreibung erfolgt regelmäßig eine funktionale Simulation in der Entwicklungssoftware, bei der sichergestellt wird, dass die gewünschten Abläufe eingehalten und alle Elemente korrekt verbunden sind. Die erstellte Hardwarebeschreibung wird dazu wie ein konventionelles Programm interpretiert, compiliert und von einer Simulationssoftware ausgeführt. Dabei handelt es sich entweder um eine interne Komponente der Entwicklungssoftware oder ein externes Programm, wie z. B. ModelSim.cite-ref-7[7] Das Augenmerk liegt bei diesem Schritt hauptsächlich auf der logischen Schaltungsfunktion. Es wird z. B. geprüft, dass Schaltfunktionen unter allen Randbedingungen in der gewünschten Weise ablaufen und Ergebnisse, die in Registern gespeichert werden, zum richtigen Zeitpunkt gelesen und verrechnet werden. Dazu wird für die gesamte Schaltung und bedarfsweise einzelne Module eine Testbench erstellt, welche das Logikdesign mit Daten füttert und unterschiedliche Betriebsfälle abdeckt.
Implementierung und Test
Ausgehend von einer verifizierten Logikschaltung erfolgt dann ein Umsetzen der Netzliste für das konkrete FPGA, wobei auch externe Funktionsblöcke, die von Drittanbietern angeboten werden und bisher nur als black box existierten, eingefügt werden. Ebenso können bei diesem Schritt Teilschaltungen, die zum Testen des FPGAs gedacht sind, wie integrierte Logic Analyzer, hinzugefügt werden. Ein sogenanntes Synthesewerkzeug führt dazu diese Beschreibung wie ein Programm aus und erstellt in mehreren Schritten für den gewünschten Baustein eine spezifische Netzliste unter Nutzung der in diesem Baustein verfügbaren Ressourcen.
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────